package com.example.springboot.controller.参数解析;

import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class 矩阵变量 {

    /**
     * @MatrixVariable   //获取矩阵变量的值 ;  后面用;分割的
     * "默认不开启矩阵变量"   开启方法看 WebMvcAutoConfiguration//自动配置
     *     1、语法: /cars/sell;Low=34 brand=byd,audi,yd
     *     2、SpringBoot默认是禁用了矩阵变量的功能
     *        手动开启:原理。对于路径的处理。UrlPathHelper 进行解析。
     *        removeSemicolonContent (移除分号内容) 支持矩阵变量的
     *     3、矩阵变量必须有 url 路径变量才能被解析
     *
     *     这个叫路径重写
     *     把Cookie的值使用矩阵变量的方式进行传递
     *
     */
   //cars/sell;low=34;brand=byd,audi,yd
    @GetMapping("/cars/{path}")
    public Map carsSell(@MatrixVariable("low") Integer low,//获取矩阵变量指定的值
                        @MatrixVariable("brand") List<String> brand,
                        @PathVariable("path") String path//为路径path的值sell
    ){
        Map<String,Object> map=new HashMap<>();
        map.put("low",low);
        map.put("brand",brand);
        map.put("path",path);
        return map;
    }

    // /boss/1;age=20/2;age=10
    @GetMapping("/boss/{bossId}/{empId}")//指定 pathVar 的 age 值
    public Map boss(@MatrixVariable(value = "age",pathVar = "bossId") Integer bossAge,
                    @MatrixVariable(value = "age",pathVar = "empId") Integer empAge){

        Map<String,Object> map=new HashMap<>();
        map.put("bossAge",bossAge);//
        map.put("empAge",empAge);

        return map;
    }

}
